
# 面向对象的变量
"""
# 变量 ： 包括类变量 ，实例变量 ，局部变量

# 1. 类变量
说明 ： 它是定义在类中，方法外的变量就是类变量
定义 ： 变量名 = 值
调用 ：
    对象名.变量名
    类名.变量名
作用范围 ： 整个类
使用场景 ：定义此类的公共数据

# 2. 实例变量
说明 ：专门给定义的对象使用的变量
定义 ： self.变量名 = 值
调用 ：self.变量名
作用范围 ： 针对当前对象里面的方法

# 3. 局部变量
# 说明 ：方法或者语句块内的变量 ， 定义在方法内
# 定义 ：变量名 = 值
# 作用范围 ： 此方法内或者是语句块内


区别 ：
定义的变量仅仅是给某个方法使用的 ，那么定义成局部变量
定义的变量是给某个对象是使用 ，定义成实例变量 。
定义的变量是给类的内部使用，定义成类变量
"""


class Bugs():

    # 定义类变量
    bug_id = 0
    bug_project = 'tpshop'
    version = 1.0
    bug_level = [1,2,3,4]
    bug_yxj = [1,2,3,4]

    # 添加构造方法
    def __init__(self,bug_project):
        """
        1. 会首先被调用 ，而且自动的 。
        2 .在此内部主要实现的初始化数据或初始化操作
        """
        self.bug_project = bug_project
        print("=============")
        print("初始化的数据:{}".format(self.bug_project))

    # 定义功能
    def create_bug(self):
        # 在方法中调用其它方法 ： self.对象
        self.search_bug('xxx')
        # 调用其它属性
        self.version = 2.0
        print("bug_project:",self.bug_project)


    def update_bug(self):
        pass

    def delete_bug(self):
        pass

    def search_bug(self,title):
        print("输出self结果:{}".format(self))
        db_bugs = [
            {'bug_id':1,'bug_title':'这是一个双方都','bug_project':'tpshop','version':1.0},
            {'bug_id': 2, 'bug_title': '这是一个上试试', 'bug_project': 'tpshop', 'version': 1.0},
            {'bug_id': 3, 'bug_title': '这是一个第三方', 'bug_project': 'wx', 'version': 1.0},
            {'bug_id': 4, 'bug_title': '这是一个是地方地方', 'bug_project': 'tpshop', 'version': 1.0},
            {'bug_id': 5, 'bug_title': '这是一个方法', 'bug_project': 'wx', 'version': 1.0},
        ]
        lst = []
        for bug in db_bugs:
            bug_title = bug.get('bug_title')
            if title in bug_title:
                lst.append(bug)
        return lst

bug1 = Bugs('tpshop')
# bug1.bug_id = 200
# 通过对象名访问类变量
# print("通过对象名访问类变量:",bug1.bug_project)
# print(bug1.bug_id)

# 通过类名去访问
# print(Bugs.bug_id)
# print(Bugs.bug_project)
bug1.create_bug()



